﻿const { Sequelize, DataTypes, Model } = require('sequelize')
const sequelize = new Sequelize('sample', 'db2inst1', '12345678', {
  host: '10.10.3.12',
  port: 50000,
  dialect: 'db2' /* 选择 'mysql' | 'mariadb' | 'postgres' | 'mssql' 其一 */
})

class Godzilla extends Model {}

Godzilla.init(
  {
    // 在这里定义模型属性
    firstName: {
      type: DataTypes.STRING,
      allowNull: false
    },
    lastName: {
      type: DataTypes.STRING
      // allowNull 默认为 true
    }
  },
  {
    // 这是其他模型参数
    sequelize, // 我们需要传递连接实例
    modelName: 'Godzilla', // 我们需要选择模型名称
    timestamps: false, // 不要时间戳
    freezeTableName: true // 禁止表名自动变复数
  }
)

// 定义的模型是类本身
// console.log(User === sequelize.models.Godzilla) // true

//
;(async function () {
  await sequelize.authenticate()
  console.log('Connection has been established successfully.')

  Godzilla.sync() //- 如果表不存在,则创建该表(如果已经存在,则不执行任何操作)
  // Godzilla.sync({ force: true }) //- 将创建表,如果表已经存在,则将其首先删除
  // Godzilla.sync({ alter: true }) //- 这将检查数据库中表的当前状态(它具有哪些列,它们的数据类型等),然后在表中进行

  // 创建模型实例
  // const ins = Godzilla.build({ firstName: '哥斯拉', lastName: '骷髅岛' })
  // const ins = Godzilla.build({ firstName: '奥特曼9090', lastName: '太平洋' })

  // // 把模型实例存到数据库
  // let res = await ins.save()
  // console.log('保存 user', res)

  let res = await Godzilla.findAll()
  console.log('res', res)
  // 关闭
  sequelize.close()
})()
